/*
 * Opciones.java
 * 
 * 11/21/2011
 * 
 * AOI
 */
package com.jcj.jumper;

import com.jcj.framework.Game;
import com.jcj.framework.Input.TouchEvent;
import com.jcj.framework.gl.Camera2D;
import com.jcj.framework.gl.SpriteBatcher;
import com.jcj.framework.impl.GLScreen;
import com.jcj.framework.math.OverlapTester;
import com.jcj.framework.math.Rectangle;
import com.jcj.framework.math.Vector2;
import java.util.List;
import javax.microedition.khronos.opengles.GL10;
/**
 * 
 * @author AOI
 * 
 * Version 1.0
 *
 *En esta clase se declaran todos los recursos y variables que se van a utilizar en la clase
 *para mostrar las opciones de juego y de sonido
 */
	public class Opciones extends GLScreen {
		Camera2D guiCam;
		SpriteBatcher batcher;
		Rectangle nextBounds;
		Rectangle back;
		Vector2 touchPoint;
  
    
/**
 * 
 * @param game es un objeto tipo game que se importa de framework necesario para la creacion del juego
 */
    public Opciones(Game game) {
        super(game);

        guiCam = new Camera2D(glGraphics, 320, 480);
        nextBounds = new Rectangle(320 - 64, 0, 64, 64);
        touchPoint = new Vector2();
        batcher = new SpriteBatcher(glGraphics, 1);
        back=new Rectangle(100, 120, 110, 50);
    }

    @Override
    public void resume() {
       
    }

    @Override
    public void pause() {
       
    }
    /**
     *Este metodo compara donde se dio algun touchevent con los rectangulos para ver que accion esta por
     *realizarse 
     */
    
    @Override
    
    public void update(float deltaTime) {
        List<TouchEvent> touchEvents = game.getInput().getTouchEvents();
        game.getInput().getKeyEvents();
        int len = touchEvents.size();
        
        for (int i = 0; i < len; i++) {
            TouchEvent event = touchEvents.get(i);
            touchPoint.set(event.x, event.y);
            guiCam.touchToWorld(touchPoint);

            if (event.type == TouchEvent.TOUCH_UP) {
                if (OverlapTester.pointInRectangle(nextBounds, touchPoint)) {
                    Assets.playSound(Assets.clickSound);
                    game.setScreen(new AcercaDeScreen(game));
                    return;
                }
                
                if (OverlapTester.pointInRectangle(back, touchPoint)) {
                    Assets.playSound(Assets.clickSound);
                    game.setScreen(new MainMenuScreen(game));
                    return;
                }
            }
        }
    }
    /**
	 * Este metodo se corre conforme la clase esta activa
	 * utiliza el batcher y el GL para pintar texturas y rectangulos a utilizarse en el juego
	 */
    @Override
    public void present(float deltaTime) {
        GL10 gl = glGraphics.getGL();
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        guiCam.setViewportAndMatrices();

        gl.glEnable(GL10.GL_TEXTURE_2D);
        batcher.beginBatch(Assets.background);
        batcher.drawSprite(160, 240, 320, 480, Assets.backgroundRegion);
        batcher.endBatch();

        batcher.beginBatch(Assets.Textures);
            batcher.drawSprite(80, 240, 100, 60, Assets.Opciones1);
            
        batcher.endBatch();
        batcher.beginBatch(Assets.Textures);
        batcher.drawSprite(220, 240, 100, 60, Assets.Opciones2);
        batcher.endBatch();
        batcher.beginBatch(Assets.Textures);
        batcher.drawSprite(160, 150, 110, 50, Assets.MenuPrincipal);
        batcher.endBatch();
        gl.glEnable(GL10.GL_BLEND);
        gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

        batcher.beginBatch(Assets.items);
            batcher.drawSprite(320 - 32, 32, -64, 64, Assets.arrow);
        batcher.endBatch();

        gl.glDisable(GL10.GL_BLEND);
    }

    @Override
    public void dispose() {
        
    }
}
